package java3_31;

import java.io.*;

/**
 *3：实现文件加密解密：加密规则是读出每一个字节，取反(~)后，写入
 *新文件，然后删除原文件，把新文件改成原文件同名的文件，
 *解密规则类似。输入一个文件名，实现加密和解密功能
 */
public class Homework3 {
    public static void main(String[] args) {
        String filePath = "G:\\JAVA84\\password.txt";
        encryptFile(filePath);
        System.out.println("加密完成");
        decryptFile(filePath);
        System.out.println("解密完成");
    }
    //加密文件
    public static void encryptFile(String filePath){
        try {
            FileInputStream fis = new FileInputStream(filePath);
            FileOutputStream fos = new FileOutputStream(filePath+".tmp");
            int date = 0;
            while ((date = fis.read())!=-1){
                date = ~date;
                fos.write(date);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 删除原文件
        File oldFile = new File(filePath);
        System.out.println(oldFile.delete());

        // 将加密后的文件重命名为原文件名
        File newFile = new File(filePath + ".tmp");
        System.out.println(newFile.renameTo(oldFile));
    }

//    解密文件
    public static void decryptFile(String filePath){
        try {
            FileInputStream fis = new FileInputStream(filePath+".tmp");
            FileOutputStream fos = new FileOutputStream("G:\\JAVA84\\password.txt2");
            int date = 0;

            while ((date=fis.read())!=-1){
                date = ~date;
                fos.write(date);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
